const base = {
  /**
   * content-type:
   * form=>application/x-www-form-urlencoded
   * json=>application/json
   * ......
   */
  config() {
    return {
      //接口域名：https://base.com
      host: '',
      //接口地址：/login
      url: '',
      data: {},
      header: {
        'content-type': 'application/json'
      },
      method: 'POST',
      //大于0时才生效，否则使用全局配置或者默认值
      timeout: 0,
      dataType: 'json',
      //String，不同接口请求名称不可相同，否则会拦截重复key的请求，不传默认不拦截
      requestTaskKey: '',
      //是否只返回简洁的接口数据：true 仅返回接口数据data，false 返回包含header、statusCode、errMsg、data等数据
      concise: false,
      showLoading: true,
      errorMsg: '网络不给力，请稍后再试~'
    };
  },
  getOptions(config) {
    let options = {
      ...config
    };
    ['host', 'timeout', 'requestTaskKey', 'showLoading', 'errorMsg'].forEach((item) => {
      delete options[item];
    });
    return options;
  },
  merge(a, b) {
    return Object.assign({}, a, b);
  },
  mergeConfig(defaultConfig, config, init) {
    let header = base.merge(defaultConfig.header, config.header || {});
    let params = base.merge(defaultConfig, config);
    params.header = header;
    if (!init) {
      let url = base.combineURLs(params.host, params.url);
      params.url = url;
    }
    return params;
  },
  //如果host为空，则直接使用传入的目标地址
  combineURLs(host, target) {
    return host
      ? host.replace(/\s+/g, '') + '/' + target.replace(/\s+/g, '').replace(/^\/+/, '')
      : target;
  },
  toast(text, duration, success) {
    uni.showToast({
      title: text || '出错啦~',
      icon: success ? 'success' : 'none',
      duration: duration || 2000
    });
  },
  showLoading(title, mask = true) {
    uni.showLoading({
      mask: mask,
      title: title || '请稍候...'
    });
  }
};
export default base;
